pixel artをドット絵らしくする
https://gyazo.com/a05455ce2b051b43df84cc2e40aded78
ドット絵っぽいが、変形しているあんも.icon
Julia.icon
code:jl
using Images, ImageFiltering, Colors, Statistics, StatsBase, Plots
function pixelize(img, color_func; pixels=64)
rows, cols = size(img)
block_rows = rows ÷ pixels
block_cols = cols ÷ pixels
img_pixel = zeros(RGB, rows, cols)
for row in 1:block_rows:rows
for col in 1:block_cols:cols
rep_color = color_func(block)
end
end
return img_pixel
end
img = load("img.jpg")
# img_pixel = pixelize(img, mean); plot(img_pixel)
# save("img_pixel_mean.png", img_pixel)
code:color_func.jl
# 平均値
function mean_color(block)
return RGB(r, g, b)
end
# 中央値
function median_color(block)
return RGB(r, g, b)
end
# 最頻値
function mode_color(block)
mode_color = findmax(color_counts)2 return mode_color
end
# ビットシフト
function bit_shift_color(block; bits=2)
# RGBの各成分をビットシフトする
r = floor(Int, block.r * 255) >> bits << bits
g = floor(Int, block.g * 255) >> bits << bits
b = floor(Int, block.b * 255) >> bits << bits
new_color = RGB(r / 255, g / 255, b / 255)
return new_color
end
$ img_pixel = pixelize(img, mean_color); plot(img_pixel)
https://gyazo.com/8722209531fca374a1d22c4b9ae5ee51
もうちょっとエッジ感を出したいあんも.icon
アンチエイリアスがかかりすぎている
$ img_pixel = pixelize(img, median_color); plot(img_pixel)
https://gyazo.com/9f5110f6a598dab259e9883e5810173c
いい感じあんも.icon
$ img_pixel = pixelize(img, mode_color); plot(img_pixel)
https://gyazo.com/48c2d2f34f16d37189ade64cfafb9712
$ img_pixel = img |> x->pixelize(x, mean_color; pixels=300) |> x->pixelize(x, median_color; pixels=64); plot(img_pixel)
画像を引き算して比較する